#ifndef DRIVER_BUTTON_H
#define DRIVER_BUTTON_H

#define BUTTON1_PRESS_FLAG (1 << 0)         // set for on/off key pressed
#define BUTTON1_LONG_PRESS_FLAG (1 << 1)    // set for key pressed over 2s
#define BUTTON1_DOUBLE_PRESS_FLAG (1 << 2)  // set for on/off key pressed
#define BUTTON2_PRESS_FLAG (1 << 3)         // set for on/off key pressed
#define BUTTON2_LONG_PRESS_FLAG (1 << 4)    // set for key pressed over 2s
#define BUTTON2_DOUBLE_PRESS_FLAG (1 << 5)  // set for on/off key pressed
#define BUTTON3_PRESS_FLAG (1 << 6)         // set for on/off key pressed
#define BUTTON3_LONG_PRESS_FLAG (1 << 7)    // set for key pressed over 2s
#define BUTTON3_DOUBLE_PRESS_FLAG (1 << 8)  // set for on/off key pressed
#define BUTTON4_PRESS_FLAG (1 << 9)         // set for on/off key pressed
#define BUTTON4_LONG_PRESS_FLAG (1 << 10)   // set for key pressed over 2s
#define BUTTON4_DOUBLE_PRESS_FLAG (1 << 11) // set for on/off key pressed

struct driver_button_struct_def
{
    int32_t key_value;
    void (*init)(void);
    void (*task)(void);
};
extern struct driver_button_struct_def driver_button_struct;

#endif
